Bug 557315 – stale clipboard target cache
authorMatthias Clasen <mclasen@redhat.com>
Sat, 25 Oct 2008 23:12:03 +0000 (23:12 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 25 Oct 2008 23:12:03 +0000 (23:12 +0000)
2008-10-25  Matthias Clasen  <mclasen@redhat.com>

        Bug 557315 – stale clipboard target cache

        * gtk/gtkclipboard.c (gtk_clipboard_set_contents): Remove cached
        targets. Pointed out by Evan Stade

svn path=/trunk/; revision=21713

ChangeLog
gtk/gtkclipboard.c

index 235d5ed13d19c7e7adff085bbdea8c0e602f31cc..041b044bcc0ab02815aaf7d997df72eb9b8f0f86 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-10-25  Matthias Clasen  <mclasen@redhat.com>
+       
+       Bug 557315 – stale clipboard target cache
+
+       * gtk/gtkclipboard.c (gtk_clipboard_set_contents): Remove cached
+       targets. Pointed out by Evan Stade
+
 2008-10-24  Tristan Van Berkom  <tvb@gnome.org>
 
        * gtk/gtkwidget.c: Added a note about GtkWidget:has-tooltip in
index a71e09dc0319e6bbf0c3d12a4ee280b1e8d5ba2f..48ee63f537d657e9d93eeaeb6c1cd9b4817e2809 100644 (file)
@@ -236,6 +236,7 @@ gtk_clipboard_finalize (GObject *object)
     g_signal_handler_disconnect (clipboard_widget, clipboard->notify_signal_id);
   
   g_free (clipboard->storable_targets);
+  g_free (clipboard->cached_targets);
 
   G_OBJECT_CLASS (gtk_clipboard_parent_class)->finalize (object);
 }
@@ -514,6 +515,13 @@ gtk_clipboard_set_contents (GtkClipboard         *clipboard,
     {
       clipboard->have_selection = TRUE;
 
+      if (clipboard->n_cached_targets != -1)
+        {
+          g_free (clipboard->cached_targets);
+         clipboard->cached_targets = NULL;
+          clipboard->n_cached_targets = -1;
+        }
+
       if (!(clipboard->have_owner && have_owner) ||
          clipboard->user_data != user_data)
        {
@@ -1840,8 +1848,9 @@ gtk_clipboard_owner_change (GtkClipboard        *clipboard,
 {
   if (clipboard->n_cached_targets != -1)
     {
-      clipboard->n_cached_targets = -1;
       g_free (clipboard->cached_targets);
+      clipboard->cached_targets = NULL;
+      clipboard->n_cached_targets = -1;
     }
 }